package bbalgae;

public class J01_Fundamentals {

	
	/*
	 
	 챕터2 에대한 내용 
	OOP 프로그램을 개발할때 현실세계와 같은 객체 모델을 만들어야함
	예를 들어 급여 프로그램은 직원,세금,회사,객체 등이 있어야 함. 
	하지만 바에서 객체는 유일한 데이터 형이 아님 -> 기본 (원시)
	자바에서 기본 자료형은 모두 8가지가 있음
	처음 6개의 기본 자료형은 숫자를 나타냄
	Byte(8비트,정수),short(16비트,정수),int(32비트,정수), long(64비트,정수)
	float(실수,32비트), double(실수,64비트)
	나머지 2개는 
	char(16비트,단일문자), Boolean(true,false,논리값)
	프로그램작성시 사용하려는 자료의 크기에 따라 자료형을 적절히 선택	
	
	변수(varable)
	데이터가 저장될 장소를 의미
	자바는 엄격하게 자료형을 검사하는 언어 따라서 모든 변수는 자료형이 선언되어야함
	각각의 변수를 구분하기 위해 변수에 이름을 부여 이것을 변수명,식별자(identifier)라 함
	
	변수 명명법
	1. 식별자는 자바문자와 자바 숫자로만 구성(길이는 무제한 단 식별자의 첫글자는 문자여야함)
	2. 식별자는 자바의 예약어, boolean 리터럴, null리터럴이면 안됨(true,false,null 문자는 사용불가)
	3. 식별자는 특정 범위(scope)내에서 유일해야함(중복불가)
	4. 식별자는 대/소문자를 구분함(x2와 X2는 서로 다름)
	
	자바문자와 자바숫자
	자무문자는 ASCII 문자 집합의 소/대 영문자,
	달러($)문자와 밑줄(_) 문자를 의미
	자바 숫자는 ASCII문자의 0-9를 의미
	
	리터럴(literal)
	가끔 프로그램상에서 변수에 값을 할당할 때가 있음
	예를 들어, int에 숫자 2나 char에 문자 'a'처럼 변수에 값을 할당할 때, 이 값은 컴파일러가 이해할 수 있는 형식으로 표현해야함
	소스코드 상의 값 표현법을 리터럴이라고함.
	종류는 기본자료형(정수,실수,문자,논리값)리터럴, 문자열String 리터럴, 널null 문자리터럴 
	
	유니코드(unicode)
	
	전통적으로 영어권 나라들은 알파벳을 표기하기 위해 ASCII 문자집합을 사용
	ASCII 문자집합에서 각 문자는 7비트를 사용하고 총 128개의 문자를 나타낼 수 있음.  - 아스키코드
	유럽권 문자 표기를 위해 호가장 ASCII문자집합 사용 추가적으로 128개의 문자를 정의 ( 총 256개의 문자 표기) - 확장아스키코드
	
	하지만, 모든 국가들이 라틴문자를 사용하지 않아서 동양 문화권에 속한 나라들은 다른 문자집합을 사용.
	게다가 8비트로 수 천 개의 문자를 나타내기에는 무리가 있다.  
	
	한국에서 사용하는 문자집합
	EUC-KR은 8비트 한글 완성형 문자 인코딩(ISO-2022-KR이라고도 불림) - 사용빈도가 높은 2350자만을 채택
	
	기존의 부족했던 완성형 한글을 보완하기 위해 윈도95부터 CP949(MS949)라는 문자 인코딩을 확장완성형이라는 명칭으로 도입
	KS C5601-1987이라고 불리기도함 현대의 모든 한글을 수용하게됨 
	
	유니코드는 유니코드 컨소시움이라는 비영리 단체에 의해 개발된 문자집합으로 전 세계 언어의 문자를 하나의 문자 집합에 포함하려 하고 있다.
	유니코드에 있는 고유번호로 정확히 한 문자를 표시
	 
	UTF-8
	바이트 가변길이 인코딩으로 유니코드 문자를 나타냄. 즉 영어는 1바이트, 한글은 3바이트를 이용함
	대부분의 브라우저도 UTF-8인코딩을 지원함
	
	*/
	                                                                                                                                                                                                                                                                                                                                                                                    	
	  public static void main(String[] args) {
		
		// 변수 및 자료형 선언
		
		
		int birth_year=1989;
		double pi=3.14;
		long jumin=8912049832416L; // 리터럴을 의미하는 접미사는 대문자료 표기하는게 가독성이 좋음 
		/*char First_name = '박';
		char Second_name ='미';
		char third_name = '진'; 
		*/
		char First_name = '박', Second_name='미', third_name='진';
		char grade = '♥'; 
		boolean isMale = true, ismarried=false;
		//boolean ismarried = false;
		//동일한 자료형을 가지는 변수는 ,를 이용해서 다중 변수 선언이 가능하지만 가독성이 떨어지기 때문에 안쓰는것이 좋다.
		
		char code1 = '\uC790'; // 유니코드
		char code2 = '\uBC14';
		char symbol = '\u263A';
		char symbol2 = '\u2639';
		
		System.out.println(birth_year);
		System.out.println(pi);
		System.out.println("주민등록번호 : " +jumin);
		System.out.print("이름 :" + First_name);
		System.out.print(Second_name);
		System.out.print(third_name);
		System.out.println(grade);
		System.out.println(isMale);
		System.out.println(ismarried);
		System.out.print(code1);
		System.out.println(code2);
		System.out.print(symbol);
		System.out.println(symbol2);
		
		
		
	}

}